"""
等待机制
"""
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

options = webdriver.ChromeOptions()  # 创建谷歌浏览器的options对象来接收浏览器的相关设置

options.add_argument('--start-maximized')  # 最大化窗口
options.add_argument('--incognito')  # 无痕浏览
options.add_argument('--disable-extensions')  # 禁用浏览器的扩展程序,避免干扰网站的打开
options.add_experimental_option("detach", True)  # 禁止浏览器自动关闭

driver = webdriver.Chrome(options)  # 创建谷歌浏览器驱动对象

driver.get('https://cn.bing.com/?mkt=zh-CN')

wait = WebDriverWait(driver, 6) #设置等待时间

"""
浏览器索索框搜索python
点击跳转到搜索结果页面
得到所有的相关搜索结果
依次点击前三个链接打开新的页面后再关闭页面再打开下一个链接... 
"""
## search_input = driver.find_element(By.ID,'sb_form_q')   #同步  在html里面的元素
# search_input = wait.until(EC.presence_of_element_located((By.ID,'sb_form_q')))   #异步  需要通过js渲染的元素   #等待并且获取指定的元素    相当于driver.find_element(By.ID,'sb_form_q')
# search_input.send_keys('BOBO')      #键盘输入文字
wait.until(EC.presence_of_element_located((By.ID,'sb_form_q'))).send_keys('python')
wait.until(EC.presence_of_element_located((By.ID,'search_icon'))).click()   #鼠标单机

a_links=wait.until(EC.presence_of_all_elements_located((By.XPATH,'//li[contains(@class,"b_algo")]//h2/a')))

print(a_links,len(a_links))
for a in a_links[:3]:
    a.click()   #点击a标签
    wh = driver.window_handles  #得到所有的标签页
    # print(wh,len(wh))
    driver.switch_to.window(wh[1])  #切换到第二个标签页
    print(driver.current_url)
    print(driver.title)
    driver.close()  #获取玩数据之后关闭标签页
    driver.switch_to.window(wh[0])  #返回第一个标签页
    print(driver.title)

# driver.quit()